문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Java Virtual Machine (문단 편집) == 상세 == Java와 함께 [[썬 마이크로시스템즈]]에서 개발되었으며 썬이 [[오라클(기업)|오라클]]에 인수된 후 현재는 오라클이 Java 명칭을 비롯하여 모든 권한을 행사하고 있다. Java 소스 코드는 javac 컴파일러를 거쳐 바이트코드로 변환되며, 이 바이트코드는 JRE에 들어있는 java classloader에 의해 JVM으로 적재되고 JVM은 적재된 바이트코드를 [[JIT]] 컴파일 방식으로 실행하는 컴퓨터의 OS 및 CPU 아키텍처용 기계어로 번역되어 수행된다. JVM은 플랫폼 독립적으로, JVM이 실행 가능한 환경이라면 어디서든 Java 프로그램이 실행될 수 있도록 한다. 즉, Java의 모토인 '''Write once, Run anywhere'''는 JVM을 통해 가능한 것이다. 하지만 특정 운영체제의 특수한 기능을 호출하거나 [[하드웨어]]를 제어하는 등의 일은 JVM으로 할 수 없으며, [[JNI]] 같은 Native 코드를 호출하기 위한 인터페이스를 거쳐야 한다. 즉 일종의 [[샌드박스#s-5]] 환경인 셈. 저수준 프로그래밍 언어로 개발하는 사람이라면 알겠지만 CPU 아키텍처마다 기계어가 다르기 때문에 한 OS만 지원하더라도 각 CPU용의 프로그램으로 컴파일해줘야 한다. 주로 x86-x64(x86 및 [[AMD64]])와 [[AArch64]](ARM64) 버전으로 제작한다. Java 가상머신이라고 해서 Java 바이트코드만 인식하는 것은 아니다. 이 바이트코드를 Java가 아닌 다른 언어들[* [[Kotlin]]이나 [[Scala]], [[Groovy]] 같은 언어들]을 가지고도 생성할 수 있기 때문이다. 따라서 지금의 Java 가상머신은 Java만을 위한 것이라고 생각하면 안 된다. 이름이 Java 가상머신이다 보니 Java에 종속된 게 아닌가 생각할 수도 있지만 그렇지도 않다. Java 가상머신은 코틀린 코드를 컴파일해도 읽을 수도 있고 스칼라 코드를 컴파일해도 읽을 수 있다. 단, 기본이 Java를 위해서 만들어졌기 때문에 Java 소스 코드와 컴파일된 바이트코드는 비교적 직관적으로 연결되지만, 코틀린이나 스칼라의 경우 Java와의 호환성을 고려하긴 했어도 상대적으로는 비직관적이며 필연적으로 Java를 공부해야 한다는 단점이 있다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기